#Boa:Dialog:BancosConsultas

import wx
import wx.grid
import consultasBD
import utiles
from decimal import Decimal

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)

def create(parent):
    return BancosConsultas(parent)

[wxID_BANCOSCONSULTAS, wxID_BANCOSCONSULTASBUTTON1, 
 wxID_BANCOSCONSULTASBUTTON2, wxID_BANCOSCONSULTASBUTTON3, 
 wxID_BANCOSCONSULTASBUTTON4, wxID_BANCOSCONSULTASCHECKBOX1, 
 wxID_BANCOSCONSULTASCHECKBOX2, wxID_BANCOSCONSULTASCHECKBOX3, 
 wxID_BANCOSCONSULTASCHECKBOX4, wxID_BANCOSCONSULTASCHECKBOX5, 
 wxID_BANCOSCONSULTASCOMBOBOX1, wxID_BANCOSCONSULTASDATEPICKERCTRL1, 
 wxID_BANCOSCONSULTASDATEPICKERCTRL2, wxID_BANCOSCONSULTASDATEPICKERCTRL3, 
 wxID_BANCOSCONSULTASDATEPICKERCTRL4, wxID_BANCOSCONSULTASDATEPICKERCTRL5, 
 wxID_BANCOSCONSULTASGRID1, wxID_BANCOSCONSULTASPANEL1, 
 wxID_BANCOSCONSULTASRADIOBUTTON1, wxID_BANCOSCONSULTASRADIOBUTTON2, 
 wxID_BANCOSCONSULTASSTATICTEXT1, wxID_BANCOSCONSULTASSTATICTEXT10, 
 wxID_BANCOSCONSULTASSTATICTEXT11, wxID_BANCOSCONSULTASSTATICTEXT2, 
 wxID_BANCOSCONSULTASSTATICTEXT3, wxID_BANCOSCONSULTASSTATICTEXT4, 
 wxID_BANCOSCONSULTASSTATICTEXT5, wxID_BANCOSCONSULTASSTATICTEXT6, 
 wxID_BANCOSCONSULTASSTATICTEXT7, wxID_BANCOSCONSULTASSTATICTEXT8, 
 wxID_BANCOSCONSULTASSTATICTEXT9, wxID_BANCOSCONSULTASTEXTCTRL1, 
 wxID_BANCOSCONSULTASTEXTCTRL2, wxID_BANCOSCONSULTASTEXTCTRL3, 
 wxID_BANCOSCONSULTASTEXTCTRL4, wxID_BANCOSCONSULTASTEXTCTRL5, 
 wxID_BANCOSCONSULTASTEXTCTRL6, 
] = [wx.NewId() for _init_ctrls in range(37)]

class BancosConsultas(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_BANCOSCONSULTAS,
              name='BancosConsultas', parent=prnt, pos=wx.Point(50, 46),
              size=wx.Size(968, 537), style=wx.DEFAULT_DIALOG_STYLE,
              title='Bancos')
        self.SetClientSize(wx.Size(960, 510))

        self.staticText1 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT1,
              label='Banco', name='staticText1', parent=self, pos=wx.Point(8,
              8), size=wx.Size(29, 13), style=0)

        self.comboBox1 = wx.ComboBox(choices=[],
              id=wxID_BANCOSCONSULTASCOMBOBOX1, name='comboBox1', parent=self,
              pos=wx.Point(8, 24), size=wx.Size(256, 21), style=0, value='')
        self.comboBox1.SetLabel('')

        self.staticText2 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT2,
              label='Nro Cheque', name='staticText2', parent=self,
              pos=wx.Point(264, 8), size=wx.Size(57, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_BANCOSCONSULTASTEXTCTRL1,
              name='textCtrl1', parent=self, pos=wx.Point(296, 24),
              size=wx.Size(68, 21), style=0, value='')

        self.textCtrl5 = wx.TextCtrl(id=wxID_BANCOSCONSULTASTEXTCTRL5,
              name='textCtrl5', parent=self, pos=wx.Point(296, 48),
              size=wx.Size(68, 21), style=0, value='')

        self.checkBox1 = wx.CheckBox(id=wxID_BANCOSCONSULTASCHECKBOX1,
              label='Fecha emision', name='checkBox1', parent=self,
              pos=wx.Point(384, 8), size=wx.Size(88, 13), style=0)
        self.checkBox1.SetValue(False)
        self.checkBox1.Bind(wx.EVT_CHECKBOX, self.OnFechaEmision,
              id=wxID_BANCOSCONSULTASCHECKBOX1)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_BANCOSCONSULTASDATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self, pos=wx.Point(384, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl1.Enable(False)

        self.datePickerCtrl3 = wx.DatePickerCtrl(id=wxID_BANCOSCONSULTASDATEPICKERCTRL3,
              name='datePickerCtrl3', parent=self, pos=wx.Point(384, 48),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl3.Enable(False)

        self.checkBox2 = wx.CheckBox(id=wxID_BANCOSCONSULTASCHECKBOX2,
              label='Fecha Pago', name='checkBox2', parent=self,
              pos=wx.Point(480, 8), size=wx.Size(80, 13), style=0)
        self.checkBox2.SetValue(False)
        self.checkBox2.Bind(wx.EVT_CHECKBOX, self.OnFechaPago,
              id=wxID_BANCOSCONSULTASCHECKBOX2)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_BANCOSCONSULTASDATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self, pos=wx.Point(480, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl2.Enable(False)

        self.datePickerCtrl4 = wx.DatePickerCtrl(id=wxID_BANCOSCONSULTASDATEPICKERCTRL4,
              name='datePickerCtrl4', parent=self, pos=wx.Point(480, 48),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl4.Enable(False)

        self.staticText5 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT5,
              label='Importe', name='staticText5', parent=self,
              pos=wx.Point(568, 8), size=wx.Size(38, 13), style=0)

        self.textCtrl2 = wx.TextCtrl(id=wxID_BANCOSCONSULTASTEXTCTRL2,
              name='textCtrl2', parent=self, pos=wx.Point(568, 24),
              size=wx.Size(64, 21), style=0, value='')

        self.staticText6 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT6,
              label='Destinatario', name='staticText6', parent=self,
              pos=wx.Point(632, 8), size=wx.Size(58, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_BANCOSCONSULTASTEXTCTRL3,
              name='textCtrl3', parent=self, pos=wx.Point(632, 24),
              size=wx.Size(144, 21), style=0, value='')

        self.checkBox3 = wx.CheckBox(id=wxID_BANCOSCONSULTASCHECKBOX3,
              label='Acreditados', name='checkBox3', parent=self,
              pos=wx.Point(784, 24), size=wx.Size(80, 16), style=0)
        self.checkBox3.SetValue(False)

        self.button1 = wx.Button(id=wxID_BANCOSCONSULTASBUTTON1, label='Buscar',
              name='button1', parent=self, pos=wx.Point(872, 48),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBuscar,
              id=wxID_BANCOSCONSULTASBUTTON1)

        self.button3 = wx.Button(id=wxID_BANCOSCONSULTASBUTTON3,
              label='Limpiar', name='button3', parent=self, pos=wx.Point(8,
              480), size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_BANCOSCONSULTASBUTTON3)

        self.button4 = wx.Button(id=wxID_BANCOSCONSULTASBUTTON4,
              label='Imprimir', name='button4', parent=self, pos=wx.Point(88,
              480), size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_BANCOSCONSULTASBUTTON4)

        self.button2 = wx.Button(id=wxID_BANCOSCONSULTASBUTTON2, label='Salir',
              name='button2', parent=self, pos=wx.Point(872, 480),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_BANCOSCONSULTASBUTTON2)

        self.grid1 = wx.grid.Grid(id=wxID_BANCOSCONSULTASGRID1, name='grid1',
              parent=self, pos=wx.Point(8, 80), size=wx.Size(944, 392),
              style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnGridDobleClick)

        self.staticText3 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT3,
              label='Doble click sobre el cheque para acreditarlo/anularlo',
              name='staticText3', parent=self, pos=wx.Point(176, 480),
              size=wx.Size(298, 13), style=0)
        self.staticText3.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))
        self.staticText3.Show(False)

        self.staticText4 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT4,
              label='Total', name='staticText4', parent=self, pos=wx.Point(640,
              480), size=wx.Size(24, 13), style=0)
        self.staticText4.Show(False)

        self.textCtrl4 = wx.TextCtrl(id=wxID_BANCOSCONSULTASTEXTCTRL4,
              name='textCtrl4', parent=self, pos=wx.Point(672, 480),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl4.Show(False)
        self.textCtrl4.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))

        self.datePickerCtrl5 = wx.DatePickerCtrl(id=wxID_BANCOSCONSULTASDATEPICKERCTRL5,
              name='datePickerCtrl5', parent=self, pos=wx.Point(552, 480),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl5.Show(False)

        self.staticText7 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT7,
              label='Fecha', name='staticText7', parent=self, pos=wx.Point(520,
              480), size=wx.Size(29, 13), style=0)
        self.staticText7.Show(False)

        self.staticText8 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT8,
              label='desde', name='staticText8', parent=self, pos=wx.Point(264,
              24), size=wx.Size(29, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT9,
              label='hasta', name='staticText9', parent=self, pos=wx.Point(264,
              48), size=wx.Size(27, 13), style=0)

        self.textCtrl6 = wx.TextCtrl(id=wxID_BANCOSCONSULTASTEXTCTRL6,
              name='textCtrl6', parent=self, pos=wx.Point(752, 480),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl6.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))
        self.textCtrl6.Show(False)

        self.checkBox4 = wx.CheckBox(id=wxID_BANCOSCONSULTASCHECKBOX4,
              label='Anulados', name='checkBox4', parent=self, pos=wx.Point(784,
              40), size=wx.Size(70, 13), style=0)
        self.checkBox4.SetValue(False)

        self.checkBox5 = wx.CheckBox(id=wxID_BANCOSCONSULTASCHECKBOX5,
              label='Pendientes', name='checkBox5', parent=self,
              pos=wx.Point(784, 56), size=wx.Size(70, 13), style=0)
        self.checkBox5.SetValue(False)
        
        self.staticText10 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT10,
              label='Estado de los cheques', name='staticText10', parent=self,
              pos=wx.Point(784, 8), size=wx.Size(107, 13), style=0)

        self.panel1 = wx.Panel(id=wxID_BANCOSCONSULTASPANEL1, name='panel1',
              parent=self, pos=wx.Point(664, 48), size=wx.Size(112, 16),
              style=wx.TAB_TRAVERSAL)

        self.radioButton1 = wx.RadioButton(id=wxID_BANCOSCONSULTASRADIOBUTTON1,
              label='Emision', name='radioButton1', parent=self.panel1,
              pos=wx.Point(0, 0), size=wx.Size(56, 13), style=0)
        self.radioButton1.SetValue(False)

        self.radioButton2 = wx.RadioButton(id=wxID_BANCOSCONSULTASRADIOBUTTON2,
              label='Pago', name='radioButton2', parent=self.panel1,
              pos=wx.Point(56, 0), size=wx.Size(56, 13), style=0)
        self.radioButton2.SetValue(False)

        self.staticText11 = wx.StaticText(id=wxID_BANCOSCONSULTASSTATICTEXT11,
              label='Orden por fecha de', name='staticText11', parent=self,
              pos=wx.Point(568, 48), size=wx.Size(94, 13), style=0)

    def __init__(self, parent, acreditaciones = False):
        self._init_ctrls(parent)
        self.acreditaciones = acreditaciones
        self.SetTitle("Banco: CONSULTA DE CHEQUES")
        self.textCtrl4.SetBackgroundColour(VERDE)
        self.textCtrl6.SetBackgroundColour(ROJO)
        self.encontrado = False
        if self.acreditaciones:
            self.checkBox3.Show(False)
            self.checkBox4.Show(False)
            self.checkBox5.Show(False)
            self.staticText10.Show(False)
            self.staticText3.Show(True)
            self.staticText4.Show(True)
            self.textCtrl4.Show(True)
            self.textCtrl6.Show(True)
            self.totalAcreditado = Decimal("0.00")
            self.totalAnulado = Decimal("0.00")
            self.SetTitle("Banco: ACREDITAR CHEQUE")
            self.staticText7.Show(True)
            self.datePickerCtrl5.Show(True)
        self.llenarComboBanco()
        self.crearGrilla()

    def autosizegrilla(self):
        for i in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(i,True)
        self.grid1.Refresh()

    def crearGrilla(self):
        columnas =['Banco','Nro.Cheque','Destinatario','Fecha\nEmision','Fecha\nPago','Importe','Acreditado','Observaciones','Fecha\nAcreditado']
        self.grid1.CreateGrid(1,len(columnas))
        for i,col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)
        self.autosizegrilla()
        self.grid1.EnableEditing(False)

    def llenarComboBanco(self):
        sql = "SELECT nombre,codbanco FROM chq_bancos WHERE 1"
        resultados = consultasBD.ordenCrudaDict(sql)
        self.comboBox1.Append("todos")
        for item in resultados:
            aux = item["nombre"]+" / "+str(item["codbanco"])
            self.comboBox1.Append(aux)
        self.comboBox1.SetSelection(0)

    def OnSalir(self, event):
        self.Close()

    def OnFechaEmision(self, event):
        if self.checkBox1.GetValue():
            self.datePickerCtrl1.Enable(True)
            self.datePickerCtrl3.Enable(True)
        else:
            self.datePickerCtrl1.Enable(False)
            self.datePickerCtrl3.Enable(False)

    def OnFechaPago(self, event):
        if self.checkBox2.GetValue():
            self.datePickerCtrl2.Enable(True)
            self.datePickerCtrl4.Enable(True)
        else:
            self.datePickerCtrl2.Enable(False)
            self.datePickerCtrl4.Enable(False)

    def armarConsulta(self):
        opcAcreditados = ""
        opcion = [0,0,0]
        #acreditados - anulados - pendientes
        #1           - 2        - 0
        if self.checkBox3.GetValue(): opcion[0] = 1
        if self.checkBox4.GetValue(): opcion[1] = 1
        if self.checkBox5.GetValue(): opcion[2] = 1
        if opcion == [0,0,0]:
            opcAcreditados = " acreditado='0' "
        if opcion == [0,0,1]:
            opcAcreditados = " acreditado='0' "
        if opcion == [0,1,0]:
            opcAcreditados = " acreditado='2' "
        if opcion == [0,1,1]:
            opcAcreditados = " acreditado IN ('2','0') "
        if opcion == [1,0,0]:
            opcAcreditados = " acreditado='1' "
        if opcion == [1,0,1]:
            opcAcreditados = " acreditado IN ('1','0') "
        if opcion == [1,1,0]:
            opcAcreditados = " acreditado IN ('1','2') "
        if opcion == [1,1,1]:
            opcAcreditados = " acreditado IN ('0','1','2') "

        if self.comboBox1.GetLabel()=="todos":
            opcBanco = ""
        else:
            banco,codbanco = self.comboBox1.GetLabel().split(" / ")
            print banco
            opcBanco = " AND codbanco='"+codbanco+"' \n"
        if self.textCtrl1.GetLabel() != "":
            if self.textCtrl5.GetLabel()=="":
                opcNroCheque = " AND nrocheque='"+self.textCtrl1.GetLabel()+"' \n"
            else:
                chqinicio = self.textCtrl1.GetLabel()
                chqfin = self.textCtrl5.GetLabel()
                chqinicio1 = Decimal(chqinicio)
                chqfin1 = Decimal(chqfin)
                if chqinicio1>chqfin1:
                    self.textCtrl1.SetLabel(str(chqfin))
                    self.textCtrl5.SetLabel(str(chqinicio))
                    chqinicio = self.textCtrl1.GetLabel()
                    chqfin = self.textCtrl5.GetLabel()
                opcNroCheque = " AND nrocheque BETWEEN '"+chqinicio+"' AND '"+chqfin+"' \n"
        else:
            opcNroCheque = ""
        if self.checkBox1.GetValue():
            fecha1 = self.datePickerCtrl1.GetLabel()
            fecha1 = utiles.formatear_fecha_date3(fecha1)
            fecha3 = self.datePickerCtrl3.GetLabel()
            fecha3 = utiles.formatear_fecha_date3(fecha3)
            opcFechaEmision = " AND fechaemision BETWEEN '"+fecha1+"' AND '"+fecha3+"' \n"
        else:
            opcFechaEmision = ""
        if self.checkBox2.GetValue():
            fecha2 = self.datePickerCtrl2.GetLabel()
            fecha2 = utiles.formatear_fecha_date3(fecha2)
            fecha4 = self.datePickerCtrl4.GetLabel()
            fecha4 = utiles.formatear_fecha_date3(fecha4)
            opcFechapago = " AND fechapago BETWEEN '"+fecha2+"' AND '"+fecha4+"' \n"
        else:
            opcFechapago = ""

        if self.textCtrl2.GetLabel()!="":
            opcImporte=" AND importe='"+self.textCtrl2.GetLabel()+"' \n"
        else:
            opcImporte=""
        if self.textCtrl3.GetLabel()!="":
            opcDestinatario=" AND (destinatario LIKE '%"+self.textCtrl3.GetLabel()+"%' "
            opcDestinatario+="OR observaciones LIKE '%"+self.textCtrl3.GetLabel()+"%') \n"
        else:
            opcDestinatario=""
        
        opcSoloNoAcreditados = ""
        opOrden = "ORDER BY codbanco, nrocheque \n"
        if self.radioButton1.GetValue(): #fecha emision
            opOrden = "ORDER BY fechaemision,codbanco,nrocheque \n"
        if self.radioButton2.GetValue(): #fecha pago
            opOrden = "ORDER BY fechapago,codbanco,nrocheque \n"

        r1 = "SELECT * FROM chq_emitidos WHERE "+opcAcreditados
        r2 = opcBanco+opcNroCheque+opcFechaEmision+opcFechapago
        r3 = opcImporte+opcDestinatario+opcSoloNoAcreditados 
        r4 = opOrden
        sql = r1+r2+r3+r4
        print sql
        return sql

    def buscarBanco(self,codbanco):
        sql = "SELECT nombre FROM chq_bancos WHERE codbanco='"+str(codbanco)+"' "
        resultados = consultasBD.ordenCruda(sql)
        return resultados[0]

    def OnLimpiarEncabezado(self):
        self.comboBox1.SetSelection(0)
        self.textCtrl1.SetLabel("")
        self.textCtrl5.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl3.SetLabel("")
        self.checkBox1.SetValue(False)
        self.checkBox2.SetValue(False)
        self.checkBox3.SetValue(False)
        self.checkBox4.SetValue(False)
        self.checkBox5.SetValue(False)
        self.radioButton1.SetValue(False)
        self.radioButton2.SetValue(False)
        self.button1.SetLabel("Buscar")
        self.encontrado = False

    def OnLimpiar(self, event, tipo=True):
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        if tipo:
            self.OnLimpiarEncabezado()
        self.comboBox1.SetFocus()

    def OnBuscar(self, event):
        if self.button1.GetLabel()=="Acreditar":
            self.procesaAcreditaciones()
            return
        if not self.acreditaciones:
            if not self.checkBox3.GetValue() and \
               not self.checkBox4.GetValue() and \
               not self.checkBox5.GetValue():
                   utiles.mensaje(None,'Debe seleccionar "Estado de los cheques"')
                   return
        sql = self.armarConsulta()
        resultados = consultasBD.ordenCrudaDict(sql)
        self.OnLimpiar(None,False)
        total = Decimal("0.00")
        fila = 0
        for fila,item in enumerate(resultados):
            #llenar grilla
            #Banco,NroCheque,Destinatario,FechaEmision,FechaPago,Importe,Acreditado,Observaciones
            #0     1         2            3            4                5       6          7
            codbanco = str(item["codbanco"])
            nombre = (self.buscarBanco(codbanco)[0]).split(" ")
            try:
                if nombre[0]=="GALICIA":
                    banco = "GALICIA"+" / "+codbanco
                else:
                    banco = nombre[1]+" "+nombre[2]+" / "+codbanco
            except:
                try:
                    banco = nombre[1]+" / "+codbanco
                except:
                    banco = codbanco
            self.grid1.SetCellValue(fila,0,banco)
            self.grid1.SetCellValue(fila,1,str(item["nrocheque"]))
            self.grid1.SetCellValue(fila,2,str(item["destinatario"]))
            fecha = str(item["fechaemision"])
            fecha = utiles.invertirFecha2(fecha)
            self.grid1.SetCellValue(fila,3,fecha)
            self.grid1.SetCellAlignment(fila, 3, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
            fecha = str(item["fechapago"])
            fecha = utiles.invertirFecha2(fecha)
            self.grid1.SetCellValue(fila,4,fecha)
            self.grid1.SetCellAlignment(fila, 4, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
            try:
                total+= Decimal(str(item["importe"]))
            except:
                total+= Decimal("0.00")
            self.grid1.SetCellValue(fila,5,str(item["importe"]))
            self.grid1.SetCellAlignment(fila, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellValue(fila,7,str(item["observaciones"]))
            acreditado = item["acreditado"]
            if acreditado == 0:
                self.grid1.SetCellValue(fila,6,"Pendiente")
            elif acreditado == 1:
                self.grid1.SetCellValue(fila,6,"OK")
            else:
                self.grid1.SetCellValue(fila,6,"Anulado")

            fecha = str(item["fechaacreditacion"])
            if fecha=="None":
                fecha = ""
            else:
                fecha = utiles.invertirFecha2(fecha)
            self.grid1.SetCellValue(fila,8,fecha)

            self.grid1.AppendRows()
        
        if self.grid1.GetNumberRows()>1:
            self.grid1.SetCellValue(fila+1,2,"TOTAL")
            self.grid1.SetCellValue(fila+1,5,str(total))
            self.grid1.SetCellAlignment(fila+1, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.autosizegrilla()
        
        if self.acreditaciones:
            self.button1.SetLabel("Acreditar")

    def OnImprimir(self, event):
        print "Imprimir"

        f=open("c:\\matrisamor.doc\\reporte-BancosConsulta.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 50
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            #Banco,NroCheque,Destinatario,FechaEmision,FechaPago,Importe,Acreditado,Observaciones
            #0     1         2            3            4                5       6          7
            fecha = utiles.getfechaTime()
            banco = self.comboBox1.GetLabel()

            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="33%">'
            a+= 'SUSSAN BOUTIQUE<br>Cheques Emitidos '
            a+= '<br></td>\n<td valign="center" align="left" width="34%">Banco: '+banco+'<br>'
            a+= '<br>'
            a+= '</td>\n'
            a+= '<td valign="center" align="right" width="33%">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td>\n'
            a+= '</tr>\n'
            a+= '</table>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
        #Banco,NroCheque,Destinatario,FechaEmision,FechaPago,Importe,Acreditado,Observaciones
        #0     1         2            3            4                5       6          7
            a = '<hr>'

            tama = '"0.05"'
            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Orden</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Banco</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Nro. de Cheque</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Destinatario</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Fecha\nEmision</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Fecha\nCobro</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Importe</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Acreditado</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Fecha<br>Acreditado</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Observaciones</font></td> \n'
            a+= '</tr> \n'
#            a+= '</table>\n'
            a+= '<tr>\n'
            a+= '<td colspan="10"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        renglon = 0
        for i in xrange(self.grid1.GetNumberRows()-1):
        #Banco,NroCheque,Destinatario,FechaEmision,FechaPago,Importe,Acreditado,Observaciones
        #0     1         2            3            4         5       6          7
            orden = str(i+1)
            banco = self.grid1.GetCellValue(i,0)
            nrocheque = self.grid1.GetCellValue(i,1)
            destinatario = self.grid1.GetCellValue(i,2)
            fechaemision = self.grid1.GetCellValue(i,3)
            fechapago = self.grid1.GetCellValue(i,4)
            importe = self.grid1.GetCellValue(i,5)
            acreditado = self.grid1.GetCellValue(i,6)
            observaciones = self.grid1.GetCellValue(i,7)
            fechaacreditado = self.grid1.GetCellValue(i,8)
            
            tama = '"0.2"'
            cadena = '<tr> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+orden+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+banco+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+nrocheque+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+destinatario[:20]+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+fechaemision+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+fechapago+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+importe+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+acreditado+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+fechaacreditado+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+observaciones[:20]+'</font></td> \n'
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("<p STYLE='page-break-after: always;'></p>\n")
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        tama = '"0.2"'
            
        cadena = '</table>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-BancosConsulta.html")

    def OnGridDobleClick(self, event):
        if not self.acreditaciones:
            return
        fil = self.grid1.GetGridCursorRow()
        col = self.grid1.GetGridCursorCol()
        #Banco,NroCheque,Destinatario,FechaEmision,FechaPago,Importe,Acreditado,Observaciones
        #0     1         2            3            4         5       6          7
        if self.grid1.GetCellBackgroundColour(fil,col)==BLANCO:
            color=VERDE
            importe = Decimal(self.grid1.GetCellValue(fil,5)).quantize(Decimal("0.10"))
            self.totalAcreditado = (self.totalAcreditado+importe).quantize(Decimal("0.10"))
            fechaacreditacion = str(self.datePickerCtrl5.GetLabel()).replace("/","-")
            self.grid1.SetCellValue(fil,8,fechaacreditacion)
            self.grid1.SetCellValue(fil,6,"OK")
        elif self.grid1.GetCellBackgroundColour(fil,col)==VERDE:
            color=ROJO
            importe = Decimal(self.grid1.GetCellValue(fil,5))*Decimal("-1.00")
            self.totalAcreditado = (self.totalAcreditado+importe).quantize(Decimal("0.10"))
            self.totalAnulado = (self.totalAnulado-importe).quantize(Decimal("0.10"))
            fechaacreditacion = str(self.datePickerCtrl5.GetLabel()).replace("/","-")
            self.grid1.SetCellValue(fil,8,fechaacreditacion)
            self.grid1.SetCellValue(fil,6,"Anulado")
        else:
            color=BLANCO
            importe = Decimal(self.grid1.GetCellValue(fil,5))*Decimal("-1.00")
            self.totalAnulado = (self.totalAnulado+importe).quantize(Decimal("0.10"))
            self.grid1.SetCellValue(fil,8,"")
            self.grid1.SetCellValue(fil,6,"Pendiente")

        self.textCtrl4.SetLabel(str(self.totalAcreditado))
        self.textCtrl6.SetLabel(str(self.totalAnulado))
        for x in xrange(self.grid1.GetNumberCols()):
            self.grid1.SetCellBackgroundColour(fil,x,color)
        self.grid1.Refresh()

    def procesaAcreditaciones(self):
        #Banco,NroCheque,Destinatario,FechaEmision,FechaPago,Importe,Acreditado,Observaciones
        #0     1         2            3            4         5       6          7
        
        try:
            consultasBD.begin()

            for fil in xrange(self.grid1.GetNumberRows()):
                if self.grid1.GetCellValue(fil,0)=="":
                    continue
                if self.grid1.GetCellBackgroundColour(fil,0)==BLANCO:
                    continue
                nombrebanco,codbanco = (self.grid1.GetCellValue(fil,0)).split(" / ")
                nrocheque = self.grid1.GetCellValue(fil,1)
                fechaemision = self.grid1.GetCellValue(fil,3)
                fechaemision = utiles.invertirFecha(fechaemision)
                fechapago = self.grid1.GetCellValue(fil,4)
                fechapago = utiles.invertirFecha(fechapago)
                destinatario = self.grid1.GetCellValue(fil,2)
                observaciones = self.grid1.GetCellValue(fil,7)
                fechaacreditacion = str(self.datePickerCtrl5.GetLabel()).replace("/","-")
                fechaacreditacion = utiles.invertirFecha(fechaacreditacion)
                
                if self.grid1.GetCellBackgroundColour(fil,0)==VERDE:
                    tipo = "1"
                else:
                    tipo = "2"
                
                r1 = "UPDATE chq_emitidos SET acreditado='"+tipo+"', "
                r2 = "       fechaacreditacion='"+fechaacreditacion+"' "
                r3 = "WHERE codbanco='"+codbanco+"' "
                r4 = "      AND nrocheque='"+nrocheque+"' "
                r5 = "      AND fechaemision='"+fechaemision+"' "
                r6 = "      AND fechapago='"+fechapago+"' "
                r7 = "      AND destinatario='"+destinatario+"' "
                r8 = "      AND observaciones='"+observaciones+"' "
                sql = r1+r2+r3+r4+r5+r6+r7+r8
                consultasBD.executaSinCommit(None, sql)
                
            consultasBD.commit()
        except:
            consultasBD.rollback()
            utiles.mensaje(None,"No pudo actualizarse la acreditacion")

        self.textCtrl4.SetLabel("")
        self.textCtrl6.SetLabel("")
        self.totalAcreditado=Decimal("0.00")
        self.totalAnulado=Decimal("0.00")
        self.button1.SetLabel("Buscar")
        self.OnBuscar(None)

